www.gusucode.com > C++ 图像分割源代码 > C++ 图像分割源代码/gusucode/seg_source/Utility.cpp

    //Download by http://www.NewXing.com
//Copyright (c) 2004-2005, Baris Sumengen
//All rights reserved.
//
// CIMPL Matrix Performance Library
//
//Redistribution and use in source and binary
//forms, with or without modification, are
//permitted provided that the following
//conditions are met:
//
//    * No commercial use is allowed. 
//    This software can only be used
//    for non-commercial purposes. This 
//    distribution is mainly intended for
//    academic research and teaching.
//    * Redistributions of source code must
//    retain the above copyright notice, this
//    list of conditions and the following
//    disclaimer.
//    * Redistributions of binary form must
//    mention the above copyright notice, this
//    list of conditions and the following
//    disclaimer in a clearly visible part 
//    in associated product manual, 
//    readme, and web site of the redistributed 
//    software.
//    * Redistributions in binary form must
//    reproduce the above copyright notice,
//    this list of conditions and the
//    following disclaimer in the
//    documentation and/or other materials
//    provided with the distribution.
//    * The name of Baris Sumengen may not be
//    used to endorse or promote products
//    derived from this software without
//    specific prior written permission.
//
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
//HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
//EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
//NOT LIMITED TO, THE IMPLIED WARRANTIES OF
//MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
//CONTRIBUTORS BE LIABLE FOR ANY
//DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
//EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
//OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
//DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
//HOWEVER CAUSED AND ON ANY THEORY OF
//LIABILITY, WHETHER IN CONTRACT, STRICT
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
//OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
//OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//POSSIBILITY OF SUCH DAMAGE.



#include "./Utility.h"

#include <iostream>

using std::cout;
using std::cerr;
using std::endl;



namespace CIMPL
{



	Utility::Utility(void)
	{
	}


	Utility::~Utility(void)
	{
	}


	void Utility::RunTimeError(char *message)
	{
		cerr << "Run Time Error!" << endl;
		cerr << message << endl;
		cerr << "Exiting now..." << endl << endl;
		exit(1);
	}


	void Utility::Warning(char *message)
	{
		cout << "Warning!" << endl;
		cout << message << endl << endl ;
	}


	void Utility::CheckPointer(void *p)
	{
		if(p == 0)
		{
			cerr << "Memory Allocation Error. May be out of memory!" << endl;
			cerr << "Exiting now..." << endl << endl;
			exit(1);
		}
	}

	vector<string> Utility::Split(const string& str, const string& delimiters)
	{
		std::vector<string> tokens;
		string::size_type lastPos = str.find_first_not_of(delimiters, 0);
		string::size_type pos = str.find_first_of(delimiters, lastPos);
		while (string::npos != pos || string::npos != lastPos)
		{
			tokens.push_back(str.substr(lastPos, pos - lastPos));
			lastPos = str.find_first_not_of(delimiters, pos);
			pos = str.find_first_of(delimiters, lastPos);
		}
		return tokens;
	}

	string Utility::Join(vector<string>& tokens, const string delim)
	{
		string temp = "";

		vector<string>::const_iterator constIterator;
		int i = 0;
		for(constIterator = tokens.begin(); constIterator != tokens.end(); constIterator++)
		{
			if(i != 0)
			{
				temp += delim;
			}
			temp += *constIterator;
			i++;
		}
		
		return temp;
	}


	int Utility::ToInt(string &s)
	{
		int temp;
		std::stringstream ss(s);
		ss >> temp;
		return temp;
	}


	double Utility::ToDouble(string &s)
	{
		double temp;
		std::stringstream ss(s);
		ss >> temp;
		return temp;
	}






}; // namespace